﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SimpleData.Storage.Common
{
	/// <summary>
	/// Fornece a implementação para acessar os dados armazenados de um documento
	/// </summary>
	public interface IStorageConnection
	{

		/// <summary>
		/// Somente realiza a inserção ou atualização das colunas passadas na <paramref name="row"/>.
		/// </summary>
		/// <param name="row"></param>
		void UpdatePartial( DataObjectRow row );

		/// <summary>
		/// Atualiza todos os dados do <paramref name="row"/>. Realiza "Insert" dos campos que não existem,
		/// "Update" dos campos que já estão cadastrados no banco de dados e "Delete" dos campos que existem
		/// no banco de dados mas não existem na <paramref name="row"/>.
		/// </summary>
		/// <param name="row">Registro com os dados que serão Incluídos/Atualizados/Excluídos</param>
		void InsertOrUpdate( DataObjectRow row );

		/// <summary>
		/// Realiza a exclusão da chave <paramref name="key"/>
		/// </summary>
		/// <param name="key"></param>
		void Delete( DataObjectColumnKey key );
	}
}
